{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#所有程序第一步\n",
    "#对用户和音乐分类\n",
    "#音乐分成操作次数小于10的和操作次数大于10的，根据分布直方图设置门限\n",
    "##                  再进一步分成热门歌曲和一般歌曲\n",
    "#用户分成操作次数大于35的和操作次数小于35的，根据分布直方图设置门限\n",
    "##                  再进一步分成超活跃用户和一般用户"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入库\n",
    "import pandas as pd\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "import numpy as np\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sbn\n",
    "import collections\n",
    "import seaborn as sbn\n",
    "from scipy.stats import kstest\n",
    "from sklearn.model_selection import StratifiedShuffleSplit,ShuffleSplit\n",
    "from sklearn.model_selection import train_test_split\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#输入文件\n",
    "DATA= os.path.join(os.getcwd(),'data')\n",
    "MEMBER = os.path.join(DATA,'member_done.csv')\n",
    "SONG = os.path.join(DATA,'song_done.csv')\n",
    "TRAIN = os.path.join(DATA,'train_done.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#输出文件\n",
    "SONG_CNT_UP = os.path.join(DATA,'song_cnt_up.xls')\n",
    "MEM_CNT_UP = os.path.join(DATA,'mem_cnt_up.xls')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#读取文件\n",
    "mem = pd.read_csv(MEMBER)\n",
    "song = pd.read_csv(SONG)\n",
    "train = pd.read_csv(TRAIN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>city</th>\n",
       "      <th>bd</th>\n",
       "      <th>registered_via</th>\n",
       "      <th>registration_init_time</th>\n",
       "      <th>mem_cnt</th>\n",
       "      <th>mem_re_cnt</th>\n",
       "      <th>re_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>12143</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>20110820</td>\n",
       "      <td>668</td>\n",
       "      <td>560</td>\n",
       "      <td>0.838323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>18429</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>20160130</td>\n",
       "      <td>117</td>\n",
       "      <td>8</td>\n",
       "      <td>0.068376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>16686</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>20110111</td>\n",
       "      <td>314</td>\n",
       "      <td>152</td>\n",
       "      <td>0.484076</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>19934</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>20160217</td>\n",
       "      <td>57</td>\n",
       "      <td>10</td>\n",
       "      <td>0.175439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6311</td>\n",
       "      <td>12</td>\n",
       "      <td>28</td>\n",
       "      <td>9</td>\n",
       "      <td>20060531</td>\n",
       "      <td>84</td>\n",
       "      <td>17</td>\n",
       "      <td>0.202381</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    msno  city  bd  registered_via  registration_init_time  mem_cnt  \\\n",
       "0  12143     1   0               7                20110820      668   \n",
       "1  18429     1   0               7                20160130      117   \n",
       "2  16686     1   0               7                20110111      314   \n",
       "3  19934     1   0               7                20160217       57   \n",
       "4   6311    12  28               9                20060531       84   \n",
       "\n",
       "   mem_re_cnt   re_rate  \n",
       "0         560  0.838323  \n",
       "1           8  0.068376  \n",
       "2         152  0.484076  \n",
       "3          10  0.175439  \n",
       "4          17  0.202381  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#不用用户日志信息\n",
    "#只筛选用户元信息有的东西\n",
    "mem = mem[['msno','city','bd','registered_via','registration_init_time','mem_cnt','mem_re_cnt','re_rate']]\n",
    "mem[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>song_id</th>\n",
       "      <th>source_system_tab</th>\n",
       "      <th>source_screen_name</th>\n",
       "      <th>source_type</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5833</td>\n",
       "      <td>6250</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5833</td>\n",
       "      <td>2762</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5833</td>\n",
       "      <td>2514</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>12306</td>\n",
       "      <td>15960</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5833</td>\n",
       "      <td>18592</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    msno  song_id source_system_tab   source_screen_name      source_type  \\\n",
       "0   5833     6250           explore              Explore  online-playlist   \n",
       "1   5833     2762           explore              Explore  online-playlist   \n",
       "2   5833     2514           explore              Explore  online-playlist   \n",
       "3  12306    15960        my library  Local playlist more   local-playlist   \n",
       "4   5833    18592           explore              Explore  online-playlist   \n",
       "\n",
       "   target  \n",
       "0       1  \n",
       "1       1  \n",
       "2       1  \n",
       "3       1  \n",
       "4       1  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>song_id</th>\n",
       "      <th>song_length</th>\n",
       "      <th>genre_ids</th>\n",
       "      <th>artist_name</th>\n",
       "      <th>composer</th>\n",
       "      <th>lyricist</th>\n",
       "      <th>language</th>\n",
       "      <th>song_cnt</th>\n",
       "      <th>song_re_cnt</th>\n",
       "      <th>re_rate</th>\n",
       "      <th>name</th>\n",
       "      <th>song_year</th>\n",
       "      <th>country</th>\n",
       "      <th>company</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>24521</td>\n",
       "      <td>197328</td>\n",
       "      <td>444</td>\n",
       "      <td>BLACKPINK</td>\n",
       "      <td>TEDDY|  FUTURE BOUNCE|  Bekuh BOOM</td>\n",
       "      <td>TEDDY</td>\n",
       "      <td>31.0</td>\n",
       "      <td>2893</td>\n",
       "      <td>1827</td>\n",
       "      <td>0.631524</td>\n",
       "      <td>PLAYING WITH FIRE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7504</td>\n",
       "      <td>231781</td>\n",
       "      <td>465</td>\n",
       "      <td>SUPER JUNIOR</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31.0</td>\n",
       "      <td>305</td>\n",
       "      <td>145</td>\n",
       "      <td>0.475410</td>\n",
       "      <td>SORRY| SORRY</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19516</td>\n",
       "      <td>273554</td>\n",
       "      <td>465</td>\n",
       "      <td>S.H.E</td>\n",
       "      <td>湯小康</td>\n",
       "      <td>徐世珍</td>\n",
       "      <td>3.0</td>\n",
       "      <td>318</td>\n",
       "      <td>160</td>\n",
       "      <td>0.503145</td>\n",
       "      <td>愛我的資格</td>\n",
       "      <td>2002.0</td>\n",
       "      <td>TW</td>\n",
       "      <td>C95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16105</td>\n",
       "      <td>140329</td>\n",
       "      <td>726</td>\n",
       "      <td>貴族精選</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>Traditional</td>\n",
       "      <td>52.0</td>\n",
       "      <td>57</td>\n",
       "      <td>35</td>\n",
       "      <td>0.614035</td>\n",
       "      <td>Mary Had a Little Lamb</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11874</td>\n",
       "      <td>226220</td>\n",
       "      <td>458</td>\n",
       "      <td>伍佰 &amp; China Blue</td>\n",
       "      <td>Jonathan Lee</td>\n",
       "      <td>NaN</td>\n",
       "      <td>3.0</td>\n",
       "      <td>568</td>\n",
       "      <td>320</td>\n",
       "      <td>0.563380</td>\n",
       "      <td>夢醒時分</td>\n",
       "      <td>2011.0</td>\n",
       "      <td>TW</td>\n",
       "      <td>H95</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   song_id  song_length genre_ids      artist_name  \\\n",
       "0    24521       197328       444        BLACKPINK   \n",
       "1     7504       231781       465     SUPER JUNIOR   \n",
       "2    19516       273554       465            S.H.E   \n",
       "3    16105       140329       726             貴族精選   \n",
       "4    11874       226220       458  伍佰 & China Blue   \n",
       "\n",
       "                             composer     lyricist  language  song_cnt  \\\n",
       "0  TEDDY|  FUTURE BOUNCE|  Bekuh BOOM        TEDDY      31.0      2893   \n",
       "1                                 NaN          NaN      31.0       305   \n",
       "2                                 湯小康          徐世珍       3.0       318   \n",
       "3                         Traditional  Traditional      52.0        57   \n",
       "4                        Jonathan Lee          NaN       3.0       568   \n",
       "\n",
       "   song_re_cnt   re_rate                    name  song_year country company  \n",
       "0         1827  0.631524       PLAYING WITH FIRE        NaN     NaN     NaN  \n",
       "1          145  0.475410            SORRY| SORRY        NaN     NaN     NaN  \n",
       "2          160  0.503145                   愛我的資格     2002.0      TW     C95  \n",
       "3           35  0.614035  Mary Had a Little Lamb        NaN     NaN     NaN  \n",
       "4          320  0.563380                    夢醒時分     2011.0      TW     H95  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "song[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEXCAYAAACzhgONAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl0XeV97vHvo8GyjY1HAR5jJza4\nJr1xiGJIM6xcSILJTePkXhoMaeImtLS5sJJ0CpB0tcBNbuO0KWlvyEDC4FLAuDSDyiXhMmVgtZEt\nMxtwEDYYgcEyNh6wLflIv/vHfoWPj4+2jibLip/PWmdp73e/+93v3rLPoz2c9ygiMDMz60nVcHfA\nzMyObg4KMzPL5aAwM7NcDgozM8vloDAzs1wOCjMzy+WgMBtikuZICkk1af4nkpYPUtvvlrShaP5Z\nSe8bjLZTe+slvXew2rORqWa4O2B2NJP0LPCHEXHPYLUZEedUuO0A5kdES05bvwROGYx+SboRaI2I\nvypq/9TBaNtGNp9RmI1Q3WcoZkPNQWFDStKlkl6QtFvSBklnSaqT9A1JL6bXNyTVpfrvldQq6c8l\nbZW0RdKnitqbIunfJe2StFbSlyU9UEE/TpV0t6Ttkl6W9MVUfoWk1ZL+OfVxvaSGtOwmYDbw75L2\nSPpChftcLenvJW2TtBH4byXLfybpD9P0PEk/l7Qz1b8tlf8iVX8kbfu8omNzqaSXgBu6y0q68HZJ\nT0jaIekGSaNTm39QeqzSJbF5ki4CPg58IW3v39Py1y9lDeT3ZiObg8KGjKRTgEuAt0fEeOBs4Fng\nS8AZwCLgLcBi4K+KVj0JmADMAC4ErpE0KS27Bngt1VmeXr31YzxwD/BTYDowD7i3qMqHgVXARKAR\n+CZARHwC2Az8bkSMi4ivVbjrfwR8CHgr0ACcm1P3fwH/D5gEzAT+T9r2e9Lyt6Rt35bmTwImA28A\nLuqhzY+THes3ASdz6LEtKyKuBW4Gvpa297tlqg3k92YjmIPChlInUAcslFQbEc9GxDNkb2RXRcTW\niGgDrgQ+UbTegbT8QETcCewBTpFUDfwP4G8iYm9EPAGsrKAfHwJeioivR8T+iNgdEU1Fyx+IiDsj\nohO4iexNcCA+BnwjIp6PiO3A3+bUPUD2pj899a23s6Musv1vj4h9PdT5ZtG2vwKc39cd6EG/fm+D\n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\nlstBYWZmuRwUZmaWy0FhZma5HBRmZpbLQWFmZrkcFGZmlstBYWZmuRwUZmaWy0FhZma5HBRmZpbL\nQWFmZrkqCgpJSyRtkNQi6bIyy+sk3ZaWN0maU7Ts8lS+QdLZqWyWpPslPSlpvaTPFdW/QtILkh5O\nrw8OfDfNzKy/anqrIKkauAZ4P9AKrJXUGBFPFFW7ENgREfMkLQNWAOdJWggsA04FpgP3SDoZKAB/\nHhEPShoPrJN0d1GbV0fE3w/WTpqZWf9VckaxGGiJiI0R0QGsApaW1FkKrEzTtwNnSVIqXxUR7RGx\nCWgBFkfEloh4ECAidgNPAjMGvjtmZjbYKgmKGcDzRfOtHP6m/nqdiCgAO4EplaybLlO9FWgqKr5E\n0qOSrpc0qYI+mpnZEKkkKFSmLCqsk7uupHHAvwGfj4hdqfjbwJuARcAW4OtlOyVdJKlZUnNbW1v+\nHpiZWb9VEhStwKyi+ZnAiz3VkVQDTAC2560rqZYsJG6OiB90V4iIlyOiMyK6gO+RXfo6TERcGxEN\nEdFQX19fwW6YmVl/VBIUa4H5kuZKGkV2c7qxpE4jsDxNnwvcFxGRypelp6LmAvOBNen+xXXAkxHx\nD8UNSZpWNPtR4PG+7pSZmQ2eXp96ioiCpEuAu4Bq4PqIWC/pKqA5IhrJ3vRvktRCdiaxLK27XtJq\n4AmyJ50ujohOSe8CPgE8JunhtKkvRsSdwNckLSK7RPUs8MeDuL9mZtZHyv7wH9kaGhqiubm53+vf\n0rS5bPkFp8/ud5tmZkc7SesioqG3ev5ktpmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4H\nhZmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCYmVkuB4WZ\nmeVyUJiZWS4HhZmZ5XJQmJlZLgeFmZnlclCYmVmuioJC0hJJGyS1SLqszPI6Sbel5U2S5hQtuzyV\nb5B0diqbJel+SU9KWi/pc0X1J0u6W9LT6eekge+mmZn1V69BIakauAY4B1gInC9pYUm1C4EdETEP\nuBpYkdZdCCwDTgWWAN9K7RWAP4+I3wLOAC4uavMy4N6ImA/cm+bNzGyYVHJGsRhoiYiNEdEBrAKW\nltRZCqxM07cDZ0lSKl8VEe0RsQloARZHxJaIeBAgInYDTwIzyrS1EvhI/3bNzMwGQyVBMQN4vmi+\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20fb19cfeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#音乐分类\n",
    "#因为筛选之后只有播放次数大于10的，所以先对这个分类\n",
    "#绘制播放次数的分布直方图\n",
    "sbn.distplot(song['song_cnt'].dropna())\n",
    "plt.title(('song_cnt--distribution'))\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6084814\n"
     ]
    }
   ],
   "source": [
    "song_cnt_sum = song['song_cnt'].sum()\n",
    "print(song_cnt_sum)\n",
    "#提取歌曲id和播放次数\n",
    "song_cnt = song[['song_id','song_cnt']]\n",
    "#统计播放次数的出现的次数，以及对应的播放贡献率\n",
    "song_cnt_cnt = song_cnt.groupby(by = 'song_cnt').count()['song_id'].to_dict()\n",
    "#播放次数出现的次数\n",
    "song_cnt['song_cnt_cnt'] = song_cnt['song_cnt'].apply(lambda x : int(song_cnt_cnt[x]))\n",
    "#统计每个类别的播放次数\n",
    "song_cnt['song_cnt_bo_cnt'] = song_cnt['song_cnt'].apply(lambda x : int(x)*int(song_cnt_cnt[x]))\n",
    "#song_cnt只保留一个\n",
    "song_cnt.drop_duplicates('song_cnt','last',inplace = True)\n",
    "#song_cnt升序排列\n",
    "song_cnt_up = song_cnt.sort_values(by = 'song_cnt',ascending = True)\n",
    "song_cnt_up[:5]\n",
    "#保存文件\n",
    "#播放次数对应的歌曲数量和每个类别总的播放次数\n",
    "song_cnt_up.to_excel(SONG_CNT_UP,index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20f84634da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制播放次数对应的歌曲数量，以及对应的播放率\n",
    "x = song_cnt_up['song_cnt']\n",
    "y1 = song_cnt_up['song_cnt_cnt']\n",
    "y2 = song_cnt_up['song_cnt_bo_cnt']\n",
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(111)\n",
    "ax1.plot(x, y1)\n",
    "ax1.set_ylabel('song_cnt_cnt')\n",
    "ax1.set_title(\"song_cnt_cnt and song_cnt_bo_cnt\")\n",
    "ax1.legend(loc = 2)  #显示标签\n",
    "ax2 = ax1.twinx()  # this is the important function\n",
    "ax2.plot(x, y2, '-.',c = 'red')\n",
    "ax2.set_ylabel('song_cnt_bo_cnt')\n",
    "ax2.set_xlabel('song_cnt')\n",
    "ax2.legend(loc = 1)  #显示标签\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7265352\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Users\\10100\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:8: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "D:\\Users\\10100\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:10: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "D:\\Users\\10100\\Anaconda3\\lib\\site-packages\\ipykernel\\__main__.py:12: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>mem_cnt</th>\n",
       "      <th>mem_cnt_cnt</th>\n",
       "      <th>mem_cnt_bo_cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>21842</th>\n",
       "      <td>12274</td>\n",
       "      <td>36</td>\n",
       "      <td>120</td>\n",
       "      <td>4320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21479</th>\n",
       "      <td>17883</td>\n",
       "      <td>37</td>\n",
       "      <td>116</td>\n",
       "      <td>4292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21176</th>\n",
       "      <td>14153</td>\n",
       "      <td>38</td>\n",
       "      <td>104</td>\n",
       "      <td>3952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21948</th>\n",
       "      <td>2291</td>\n",
       "      <td>39</td>\n",
       "      <td>122</td>\n",
       "      <td>4758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21903</th>\n",
       "      <td>15554</td>\n",
       "      <td>40</td>\n",
       "      <td>101</td>\n",
       "      <td>4040</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        msno  mem_cnt  mem_cnt_cnt  mem_cnt_bo_cnt\n",
       "21842  12274       36          120            4320\n",
       "21479  17883       37          116            4292\n",
       "21176  14153       38          104            3952\n",
       "21948   2291       39          122            4758\n",
       "21903  15554       40          101            4040"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#用户分类\n",
    "mem_cnt_sum = mem['mem_cnt'].sum()\n",
    "print(mem_cnt_sum)\n",
    "mem_cnt = mem[['msno','mem_cnt']]\n",
    "#统计播放次数的出现的次数，以及对应的播放贡献率\n",
    "mem_cnt_cnt = mem_cnt.groupby(by = 'mem_cnt').count()['msno'].to_dict()\n",
    "#播放次数出现的次数\n",
    "mem_cnt['mem_cnt_cnt'] = mem_cnt['mem_cnt'].apply(lambda x : int(mem_cnt_cnt[x]))\n",
    "#统计每个类别的播放次数\n",
    "mem_cnt['mem_cnt_bo_cnt'] = mem_cnt['mem_cnt'].apply(lambda x : int(x)*int(mem_cnt_cnt[x]))\n",
    "#mem_cnt只保留一个\n",
    "mem_cnt.drop_duplicates('mem_cnt','last',inplace = True)\n",
    "#mem_cnt升序排列\n",
    "mem_cnt_up = mem_cnt.sort_values(by = 'mem_cnt',ascending = True)\n",
    "\n",
    "#保存文件\n",
    "#播放次数对应的用户数量和每个类别总的播放次数\n",
    "mem_cnt_up.to_excel(MEM_CNT_UP,index = False)\n",
    "mem_cnt_up[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "21965\n",
      "7265352\n",
      "0.04243114045071705\n",
      "0.2160695462507153\n"
     ]
    }
   ],
   "source": [
    "print(mem_cnt_up['mem_cnt_cnt'].sum())\n",
    "print(mem_cnt_up['mem_cnt_bo_cnt'].sum())\n",
    "print(str(932/21965))\n",
    "print(str(1314743/len(train)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n7D7Xr18/nTJlit50000R2/rRj36kM2fOVFXVK6+8Ujdt2qT9+vXThx56SFVV+/fvr998842qBvtf\n69evn06fPl137typXbt21dWrV+sVV1yhzzzzjKqqjh49WidNmhTx2l/96lf63HPPqarq3XffrUuW\nLNFRo0bpVVddpaqq559/vs6YMUNVVcePH69Tp06NakekzwnYokl8X4eXAW2BecADwAdAUdCyIPdO\n5JWRoAsRaQ9cCfg/NfyuI7iuYzU7VHWCeuOuxcVZFuTwx7AnTYpZrX79+tx1111MmzaNa665hj33\n3DPwLQ499FBmz54NwMknn8yiRYsA1yOqSsOGDSkrK8toe4aRTVq2bEnjxo1p27YtRUVFrFq1ikce\neYTS0lK2bNnCt99+u/tcu3btKCoq8r90q7Fw4UKOPvpoAO6++24aN24MwKhRowA44IAD2LFjR0L2\n9erVi+LiYjp16sTy5cuZP38+vXr12n1uwYIFEa9buHAhPXv2BNyoiD/cVxNbkkFVS6OVqepy4ERg\nBjBQVXcFLUu1nWl3WN6c1t+BMRqa3Et/1zGVbN/utkuXxqy2bds2fv/739OnTx8mT55My5bB5xzv\nuecerr32Wo477jh69+5Nhw4dotYdOXIkF110ET179mTr1sjZA1LdnmHkErn04xBgzpw5VFRUsHDh\nQvbff3+6dOnCrFmzAJg1axZdunSJaos/TTB27FimTJkSyJZozjhdqOq3qvpC2Hd44LJUG5LWIUHg\nbmAlMM179SPBrmOjRo0CdX+rkrIhwc8+c0OCnTvXrJ08JReGhIzskQuff9Xh95NPPllPOeUU7d27\nt5577rm6c+fOwMPvixYt0tLSUu3Tp4/eeOONldpXrTwMOHPmTO3du7ceffTR6iVDjGjbT3/6Uz36\n6KP1zjvvVFXVtWvX6pAhQ7RPnz562WWXRX2u77//XgcPHqzHH3+8XnjhhVpRUVHp/uHDgIsWLdK+\nfftqr169dNGiRdXaqsmQYL68sqYlKCKtcb2s1zWON46kJbhgwQI6deoU8x7luyqYv9JFDx7RpgZR\nPvPmwWGHQefObr8GfPTRR9UmYfv168fNN9+cE+1FIsh7bRQu9vnnB5E+p0LTEsza5JCqfksoUjA9\n5KCaTLdu3ZiWwjDeVLdnGIVCLv04XLVqFcOHD69U1rFjR/7yl78kZUttJW/Ti4AbzoyloZWD/irv\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20f846650b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制播放次数对应的歌曲数量，以及对应的播放率\n",
    "x = mem_cnt_up['mem_cnt']\n",
    "y1 = mem_cnt_up['mem_cnt_cnt']\n",
    "y2 = mem_cnt_up['mem_cnt_bo_cnt']\n",
    "fig = plt.figure()\n",
    "ax1 = fig.add_subplot(111)\n",
    "ax1.plot(x, y1)\n",
    "ax1.set_ylabel('mem_cnt_cnt')\n",
    "ax1.set_title(\"mem_cnt_cnt and mem_cnt_bo_cnt\")\n",
    "ax1.legend(loc = 2)  #显示标签\n",
    "ax2 = ax1.twinx()  # this is the important function\n",
    "ax2.plot(x, y2, '-.',c = 'red')\n",
    "ax2.set_ylabel('mem_cnt_bo_cnt')\n",
    "ax2.set_xlabel('mem_cnt')\n",
    "ax2.legend(loc = 1)  #显示标签\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'song_cnt'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m   2441\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2442\u001b[1;33m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2443\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 'song_cnt'",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-21-55d9aa01effa>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msbn\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdistplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'song_cnt'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdropna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'train_song_cnt--distribution'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   1962\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1963\u001b[0m         \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1964\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1965\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1966\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   1969\u001b[0m         \u001b[1;31m# get column\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1970\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1971\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1972\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1973\u001b[0m         \u001b[1;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[1;34m(self, item)\u001b[0m\n\u001b[0;32m   1643\u001b[0m         \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1644\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1645\u001b[1;33m             \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1646\u001b[0m             \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1647\u001b[0m             \u001b[0mcache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(self, item, fastpath)\u001b[0m\n\u001b[0;32m   3588\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3589\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misnull\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3590\u001b[1;33m                 \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   3591\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   3592\u001b[0m                 \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0misnull\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Users\\10100\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m   2442\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2443\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2444\u001b[1;33m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2445\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2446\u001b[0m         \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 'song_cnt'"
     ]
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:Anaconda3]",
   "language": "python",
   "name": "conda-env-Anaconda3-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
